package 定长滑动窗口

func getAverages(nums []int, k int) (result []int) {
	//if k == 0 {
	//	result = nums
	//	return
	//}
	//sum := 0
	////进
	//for i, in := range nums {
	//	sum += in
	//	left := i - 2*k
	//	//窗口长度为 2k+1 left = i-(2k+1) +1
	//	//更
	//	if left < 0 {
	//		continue
	//	}
	//	if i < k {
	//		result[i] = -1
	//	}
	//	if i < len(nums)-k {
	//		result[i] = sum / (2*k + 1)
	//	}
	//
	//	//出
	//	sum -= nums[left]
	//}
	//return

	//初始化否则为nil 不能赋值 直接给-1 省的后面判断,可以覆盖的覆盖
	result = make([]int, len(nums))
	for i := range result {
		result[i] = -1
	}
	s := 0
	//进
	for i, num := range nums {
		left := i - 2*k
		s += num
		if left < 0 {
			continue
		}
		//更
		//c = (左边界 + 右边界) / 2
		//  = (i - 2k + i) / 2
		//  = (2i - 2k) / 2
		//  = i - k  // 关键结论：中心索引 = 右端点  i - k
		result[i-k] = s / (k*2 + 1)
		//出
		s -= nums[left]
	}
	return
}
